package com.le.tester.utils;

import redis.clients.jedis.BinaryClient;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;

/**
 * createTime：2021/10/29 17:31
 * description：生成随机数
 */
public class RandomUtil {

    /**
     * 获取闭区间内随机数返回int类型
     *
     * @param min 最小值
     * @param max 最大值
     * @return 随机数
     */
    static Long getRandomLongRange(Long min, Long max) {

        //ThreadLocalRandom.current().ints(min, (max + 1)).limit(1).findFirst().getAsInt();
        return ThreadLocalRandom.current().longs(min, (max + 1)).limit(1).sum();
    }

    /**
     * 获取闭区间内随机数返回string类型
     *
     * @param min 最小值
     * @param max 最大值
     * @return 随机数
     */
    static String getRandomStringInRange(Long min, Long max) {
        return String.valueOf(ThreadLocalRandom.current().longs(min, (max + 1)).limit(1).sum());
    }

    /**
     * 获取闭区间内并且排除集合{@param extList}里的随机数
     *
     * @param min     最小值
     * @param max     最大值
     * @param extList 需要排除的数值集合
     * @return 随机数
     */
    static Long getRandomLongRangeExit(Long min, Long max, List<Long> extList) {
        return ThreadLocalRandom.current().longs(min, (max + 1))
                .filter((r) -> !extList.contains(r)).limit(1).sum();
    }

}
